package co.edu.javeriana.konigsberg.xavier.servicio;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import co.edu.javeriana.konigsberg.xavier.dao.desc.EmpresaDAOLocal;
import co.edu.javeriana.konigsberg.xavier.dto.EmpresaDTO;
import co.edu.javeriana.konigsberg.xavier.entidad.Empresa;

@Stateless
public class EmpresaServicio implements EmpresaServicioRemote, EmpresaServicioLocal{

	@EJB
	private EmpresaDAOLocal empresaDAOLocal;

	@Override
	public List<EmpresaDTO> obtenerLista() {
		List<Empresa> empresas = empresaDAOLocal.obtenerLista();
		List<EmpresaDTO> empresaDTOs = new ArrayList<EmpresaDTO>();
		for (Empresa empresa : empresas) {
			EmpresaDTO empresaDTO = getDTO(empresa);
			empresaDTOs.add(empresaDTO);
		}
		return empresaDTOs;
	}

	private EmpresaDTO getDTO(Empresa empresa) {
		EmpresaDTO empresaDTO = new EmpresaDTO();
		empresaDTO.setCargo(empresa.getCargo());
		empresaDTO.setCelular(empresa.getCelular());
		empresaDTO.setContacto(empresa.getContacto());
		empresaDTO.setCorreoElectronico(empresa.getCorreoElectronico());
		empresaDTO.setExtension(empresa.getExtension());
		empresaDTO.setIdEmpresa(empresa.getIdEmpresa());
		empresaDTO.setNombreEmpresa(empresa.getNombreEmpresa());
		empresaDTO.setTelefono(empresa.getTelefono());
		return empresaDTO;
	}
	
	private Empresa getEntidad(EmpresaDTO empresaDTO) {
		Empresa empresa = new Empresa();
		empresa.setCargo(empresaDTO.getCargo());
		empresa.setCelular(empresaDTO.getCelular());
		empresa.setContacto(empresaDTO.getContacto());
		empresa.setCorreoElectronico(empresaDTO.getCorreoElectronico());
		empresa.setExtension(empresaDTO.getExtension());
		empresa.setIdEmpresa(empresaDTO.getIdEmpresa());
		empresa.setNombreEmpresa(empresaDTO.getNombreEmpresa());
		empresa.setTelefono(empresaDTO.getTelefono());
		return empresa;
	}

	@Override
	public EmpresaDTO obtenerEmpresaPorId(BigInteger idEmpresa) {
		if(idEmpresa != null && idEmpresa.doubleValue() > 0){
			Empresa empresa = empresaDAOLocal.obtenerPorId(idEmpresa);
			return getDTO(empresa);
		}
		return null;
	}

	@Override
	public EmpresaDTO getDTO(Object entidad) {
		if(entidad != null){
			Empresa empresa = (Empresa) entidad;
			return getDTO(empresa);
		}
		return null;
	}

	@Override
	public void guardarEmpresa(EmpresaDTO empresaDTO) {
		empresaDAOLocal.guardar(getEntidad(empresaDTO));
	}



}
